草庐IT

C++ 行到 vector

全部标签

c++ - std::vector 构造函数采用一对迭代器

我正在制作某种容器,我想模仿std::vector的界面.但是,我很难理解如何theconstructoroverload(4)作品。问题是它通常与重载(2)冲突。//(2)vector(size_typecount,constT&value,constAllocator&alloc=Allocator());//(4)templatevector(InputItfirst,InputItlast,constAllocator&alloc=Allocator());根据cppreference,C++11之前:thisconstructorhasthesameeffectasoverl

c++ - 用已知数量的元素填充 vector : specify its size in constructor or by using reserve method?

我想通过从流中读取单个元素来创建某种复杂类型的vector。我提前知道vector大小。是在vector构造函数中指定元素个数更好,还是使用reserve方法更好?这两个哪个更好?intmyElementCount=stream.ReadInt();vectormyVector(myElementCount);for(inti=0;i或intmyElementCount=stream.ReadInt();vectormyVector;myVector.reserve(myElementCount);for(inti=0;i如果我只是创建一个intvector或其他一些简单类型呢?

c++ - 保存文件字节最合适的 vector 类型是什么?

保存文件字节最合适的vector类型是什么?我正在考虑使用int类型,因为位“00000000”(1个字节)被解释为0!目标是将此数据(字节)保存到一个文件中,稍后从该文件中检索。注意:文件包含空字节(位为“00000000”)!我有点迷路了。帮我!=D谢谢!更新一:我正在使用这个函数读取文件:char*readFileBytes(constchar*name){std::ifstreamfl(name);fl.seekg(0,std::ios::end);size_tlen=fl.tellg();char*ret=newchar[len];fl.seekg(0,std::ios::b

c++ - 为什么我不能将元素 move 到不可复制的 vector 中?

编译器告诉我我正在尝试访问已删除的函数(即lambda表达式的复制构造函数)。但我看不到在哪里。std::vector>tasks;std::packaged_tasktask{[]{return1;}};tasks.emplace_back([t=std::move(task)]()mutable{t();});(codeisalsohere)(我试图找出他们为什么在https://www.slideshare.net/GlobalLogicUkraine/c11-multithreading-futures中使用shared_ptr)。在Gcc和MSVC上我得到同样的错误-我担心我

c++ - 在 vector 上使用基于范围的 for 循环时,CppCoreChecker C 样式转换警告

假设以下代码:#include#include#includeintmain(){std::vectorlines;lines.push_back("line");for(constauto&s:lines){std::cout在for循环的那一行,我收到以下警告:C26493Don'tuseC-stylecaststhatwouldperformastatic_castdowncast,const_cast,orreinterpret_cast.谁能解释一下这是从哪里来的?我正在使用VisualStudio2017CommunityEdition版本15.2。

c++ - 扩展 std::vector 是个好主意吗?

稍微使用javascript,我意识到与C++相比,它的开发速度更快,后者由于通常不适用的原因而减慢了编写速度。总是传递.begin()和.end()是不舒服的,这在我的所有应用程序中都会发生。我正在考虑扩展std::vector(更多的是通过封装而不是继承),它主要遵循javascript方法的约定,例如.filter([](inti){returni>=0;}).indexOf(txt2).join(delim).reverse()代替autoit=std::copy_if(foo.begin(),foo.end(),std::back_inserter(bar),[](inti)

c++ - 将 std::wstring 拆分为 std::vector

这个问题展示了如何拆分string进入vector使用单个字符定界符。问题:Rightwaytosplitanstd::stringintoavector但是,将此技术应用于wstring并不像我想的那么容易。因此这绝对不是重复的!wstringstreamstringStream(str);istream_iteratorbegin(stringStream);istream_iteratorend;List=vector(begin,end);copy(List.begin(),List.end(),ostream_iterator(cout,";"));第二行无法使用VS2015

c++ - 指向 vector 元素的指针

如果我有一个指向vector中元素的指针,比如元素2,然后该元素与同一vector的元素4交换。指针现在指向元素2、元素4还是两者都不指向?示例:vectora等于[1,2,3,4,5]创建指向元素2的指针,在本例中它等于3交换元素2和4vectora现在是[1,2,5,4,3]vector指向哪里? 最佳答案 你的意思是,“指针指向哪里?”。如果是这种情况,它将指向内存中与以前相同的位置,该位置现在由值5占用。此外,我假设您的意思是交换两个位置之间的值。为什么?仅仅是因为你的指针指向了一个内存位置。存储在那里的内容并不重要——它可

C++ vector 数学和 OpenGL 兼容

我一直在做很多vector数学的事情,并为它写了我自己的模板。我的要求是很多vector数学(加法、减法、缩放、叉积和点积),我还需要能够将我的vector作为float[]传递,以便openGL可以使用它。用了一段时间挺开心的,今天有个讲师看到了,吐槽一下。他特别讨厌两件事(我理解其中之一),我对继承的使用,因为它似乎不遵循isa风格。而我的类型转换(T*)this,当然他没有太多的解决方案。首先:继承,我需要能够使用vec2到vec4,所以我设计了这样的vector。templateVector2D{public:getX(),getY(),setX(),setY()....};t

c++ - 从 vector C++ 中删除对象时出现段错误

所以当我运行这个函数时出现段错误classvector>::iteratoritr=records.begin();for(;itr!=records.end();++itr){if(itr->isSelected()){itr=records.erase(itr);recordSize--;}}我的vector是vector>records;和函数isSelected()只是一个boolean选择对象时为真,未选择时为假。谁能帮帮我,我看不出这样做有什么问题 最佳答案 在删除最后一个元素的情况下,itr将首先是records.en